package com.enjoyor.soa.traffic.api.service.dubbo.bigdata;

import com.enjoyor.soa.traffic.util.pojo.Page;
import com.enjoyor.soa.traffic.util.pojo.ResultPojo;

import java.util.Date;
/**
 * 分析车辆与驾驶证：一证多车，一车多证
 */
public interface DubboAnalyzeVehDrivliceService {

    /**
     * 一证多车
     *
     * @param drivingLicense 驾驶证号
     * @param vehNumMin 绑定车辆不少于
     * @param startTime 分析起始日期
     * @param endTime 分析截止日期
     * @param page 分页
     * @return Page &lt; DrivliceVehDto &gt; ：包含一证多车信息 的分页集合
     */
    public ResultPojo analyzeDrivliceVeh(String token, String drivingLicense, Integer vehNumMin, Date startTime, Date endTime, Page page);

    /**
     * 导出一证多车分析结果
     *
     * @param drivingLicense 驾驶证号
     * @param vehNumMin 绑定车辆不少于
     * @param startTime 分析起始日期
     * @param endTime 分析截止日期
     * @param startIndex 导出起始数据，默认 1
     * @param endIndex 导出起始数据，默认 5000
     * @return List &lt; DrivliceVehDto &gt; ：包含一证多车信息 的集合
     */
    public ResultPojo expDrivliceVeh(String token, String drivingLicense, Integer vehNumMin, Date startTime, Date endTime, int startIndex, int endIndex);

    /**
     * 一证多车 总记录数
     *
     * @param token
     * @param drivingLicense 驾驶证号
     * @param vehNumMin 绑定车辆不少于
     * @param startTime 分析起始日期
     * @param endTime 分析截止日期
     * @return 总记录数
     */
    public ResultPojo countDrivliceVeh(String token, String drivingLicense, Integer vehNumMin, Date startTime, Date endTime);






    /**
     * 一车多证
     *
     * @param licenseType 号牌类型
     * @param licenseNum 号牌号码
     * @param drivliceNumMin 绑定驾照不少于
     * @param vioNumMin 违法次数不少于
     * @param vioScoreMin 累积扣分不少于
     * @param useType 车辆使用性质
     * @param startTime 分析起始日期
     * @param endTime 分析截止日期
     * @param order 排序 "drivliceNum desc" / "drivliceNum asc" / "vioScore desc" /"vioScore asc"
     * @param page 分页
     * @return Page &lt; DrivliceVehDto &gt; ：包含一证多车信息 的分页集合
     */
    public ResultPojo analyzeVehDrivlice(String token, String licenseType, String licenseNum, Integer drivliceNumMin,Integer vioNumMin, Integer vioScoreMin,String useType, Date startTime, Date endTime, String order, Page page);

    /**
     * 导出一车多证分析结果
     *
     * @param token
     * @param licenseType 号牌类型
     * @param licenseNum 号牌号码
     * @param drivliceNumMin 绑定驾照不少于
     * @param vioNumMin 违法次数不少于
     * @param vioScoreMin 累积扣分不少于
     * @param useType 车辆使用性质
     * @param startTime 分析起始日期
     * @param endTime 分析截止日期
     * @param order 排序 "drivliceNum desc" / "drivliceNum asc" / "vioScore desc" /"vioScore asc"
     * @param startIndex 导出起始数据，默认 1
     * @param endIndex 导出起始数据，默认 5000
     * @return List &lt; DrivliceVehDto &gt; ：包含一证多车信息 的集合
     */
    public ResultPojo expVehDrivlic(String token, String licenseType, String licenseNum, Integer drivliceNumMin,Integer vioNumMin, Integer vioScoreMin,String useType, Date startTime, Date endTime, String order,  int startIndex, int endIndex);

    /**
     * 一车多证 总记录数
     *
     * @param token
     * @param licenseType 号牌类型
     * @param licenseNum 号牌号码
     * @param drivliceNumMin 绑定驾照不少于
     * @param vioNumMin 违法次数不少于
     * @param vioScoreMin 累积扣分不少于
     * @param useType 车辆使用性质
     * @param startTime 分析起始日期
     * @param endTime 分析截止日期
     * @return 总记录数
     */
    public ResultPojo countVehDrivlic(String token, String licenseType, String licenseNum, Integer drivliceNumMin,Integer vioNumMin, Integer vioScoreMin,String useType, Date startTime, Date endTime);


    /**
     * 一证多车 - 绑定车辆
     *
     * @param drivingLicense 驾驶证号
     * @param startTime 分析起始日期
     * @param endTime 分析截止日期
     * @return List &lt; VehicleInfoDto &gt; ：包含一证多车绑定车辆信息 的集合
     */
    public ResultPojo analyzeDrivliceVehDetail(String token, String drivingLicense, Date startTime, Date endTime);


    /**
     * 一车多证 - 绑定驾驶证
     *
     * @param licenseType 号牌类型
     * @param licenseNum 号牌号码
     * @param startTime 分析起始日期
     * @param endTime 分析截止日期
     * @param startTime 分析起始日期
     * @param endTime 分析截止日期
     * @return List &lt; DrivliceDto &gt; ：包含一车多证绑定驾驶证信息 的集合
     */
    public ResultPojo analyzeVehDrivliceDetail(String token, String licenseType, String licenseNum,Date startTime, Date endTime);




    /**
     *  违法详情
     *
     * @param licenseType 号牌类型
     * @param licenseNum 号牌号码
     * @param drivingLicense 驾驶证号
     * @param startTime 分析起始日期
     * @param endTime 分析截止日期
     * @return List &lt; ViolationInfoDto &gt; ：包含一证多车绑定车辆信息 的集合
     */
    public ResultPojo analyzeViolationDetail(String token, String licenseType, String licenseNum,String drivingLicense, Date startTime, Date endTime);


}
